package negocio.atualizacaoImpostos;

import java.io.IOException;

import utilidades.FormataNumero;
import banco.atualizacaoImpostos.AtualizacaoDAO;
import dominio.Cliente;
import dominio.atualizacaoImpostos.Atualizacao;
import fachada.atualizacaoImpostos.Fachada_Atualizacao;

public class Negocio {

	static Fachada_Atualizacao fat;
	
	public static void calculaJurosSelic(Atualizacao at) {
		
		float juros_selic = 0;
		
		if (at.getValor_compensado() == 0) {
			juros_selic = (at.getValor_principal() * at.getTaxa_selic()) / 100;
			/*System.out.println("VALOR COMPENSADO == 0");
			System.out.println("VALOR PRINCIPAL: " + at.getValor_principal());
			System.out.println("TAXA SELIC: " + at.getTaxa_selic());			
			System.out.println("VALOR PRINC * TAXA SELIC: " + juros_selic);*/
		}
		else {
			juros_selic = (at.getValor_principal() * 1) / 100;
			/*System.out.println("VALOR COMPENSADO != 0");
			System.out.println("VALOR PRINCIPAL : " + at.getValor_principal());
			System.out.println("VALOR PRINC * 1 / 100: " + juros_selic);*/
		}
		
		juros_selic = FormataNumero.formatar(juros_selic);
		at.setJuros_selic(juros_selic);
		
	}

	public static void calculaPrimeiraVez(Atualizacao at) {
		
		float saldo_antes_compensar = 0;
		float sac_com_juros_selic = 0;
		float saldo_sem_juros = 0;
		float saldo_contabil = 0;
		
		saldo_antes_compensar = at.getValor_principal() + at.getJuros_selic() + at.getJuros_selic_1_porc();
		saldo_antes_compensar = FormataNumero.formatar(saldo_antes_compensar);
		
		sac_com_juros_selic = saldo_antes_compensar;
		
		saldo_sem_juros = (at.getValor_principal() * saldo_antes_compensar) / saldo_antes_compensar;
		saldo_sem_juros = FormataNumero.formatar(saldo_sem_juros);
		
		saldo_contabil = saldo_antes_compensar;
		
		at.setSaldo_antes_compensar(saldo_antes_compensar);
		at.setSac_com_juros_selic(sac_com_juros_selic);
		at.setSaldo_sem_juros(saldo_sem_juros);
		at.setSaldo_contabil(saldo_contabil);
		
	}

	public static void calculaValorPrincipal(Atualizacao at, Cliente c, int id) {

		fat = new AtualizacaoDAO();
		Atualizacao atua = new Atualizacao();
		try {
			atua = fat.selectDetalhes_Atualizacao(at, c, id);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		at.setValor_principal(atua.getSaldo_sem_juros());
		
	}
	
	public static void calculaJurosSelic_1Porc(Atualizacao at) {
			
		float juros_selic_1_porc = 0;
		
		if (at.getValor_compensado() > 0) {
			juros_selic_1_porc = ((at.getSaldo_apos_compensar() * at.getValor_principal()) / (at.getSaldo_antes_compensar())) * at.getTaxa_selic();
			juros_selic_1_porc = juros_selic_1_porc / 100;
			juros_selic_1_porc = FormataNumero.formatar(juros_selic_1_porc);
		}
		
		at.setJuros_selic_1_porc(juros_selic_1_porc);
			
	}
	
	public static void calculaSaldoAposCompensar(Atualizacao at) {
		
		float saldo_apos_compensar = at.getSaldo_antes_compensar() - at.getValor_compensado();
		saldo_apos_compensar = FormataNumero.formatar(saldo_apos_compensar);
		
		at.setSaldo_apos_compensar(saldo_apos_compensar);
		
	}
	
	public static void calculaSaldoAntesCompensar_PrimeiraVez(Atualizacao at, Cliente c, int id) {
		
		float saldo_antes_compensar = 0;
		
		fat = new AtualizacaoDAO();
		Atualizacao atua = new Atualizacao();
		try {
			atua = fat.selectDetalhes_Atualizacao(at, c, id);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		if (at.getValor_compensado() == 0) {
			
			if (atua.getSaldo_apos_compensar() == 0) {				
				saldo_antes_compensar = at.getValor_principal() + at.getJuros_selic();				
			} else {
				saldo_antes_compensar = atua.getSaldo_apos_compensar() + at.getJuros_selic() + atua.getJuros_selic_1_porc();
			}					
			
		}
		else if (at.getValor_compensado() > 0) {
			
			saldo_antes_compensar = atua.getSac_com_juros_selic() + at.getJuros_selic(); 
			
		}
		else {
			saldo_antes_compensar = 0;
		}
		
		saldo_antes_compensar = FormataNumero.formatar(saldo_antes_compensar);
		at.setSaldo_antes_compensar(saldo_antes_compensar);
		
	}

	public static void calculaSAC(Atualizacao at) {
		
		float sac_com_juros_selic = 0;
		
		sac_com_juros_selic = at.getSaldo_apos_compensar() + at.getJuros_selic_1_porc();
		sac_com_juros_selic = FormataNumero.formatar(sac_com_juros_selic);
		
		at.setSac_com_juros_selic(sac_com_juros_selic);
		
	}
	
	public static void calculaSaldoSemJuros(Atualizacao at, Cliente c, int id){
		
		float saldo_sem_juros = 0;
		
		fat = new AtualizacaoDAO();
		Atualizacao atua = new Atualizacao();
		try {
			atua = fat.selectDetalhes_Atualizacao(at, c, id);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		saldo_sem_juros = (atua.getSaldo_sem_juros() * at.getSaldo_apos_compensar()) / at.getSaldo_antes_compensar();
		saldo_sem_juros = FormataNumero.formatar(saldo_sem_juros);
		at.setSaldo_sem_juros(saldo_sem_juros);
		
	}

	public static void calculaSaldoContabil(Atualizacao at){
		
		float saldo_contabil = 0;
		
		saldo_contabil = at.getSac_com_juros_selic();
		saldo_contabil = FormataNumero.formatar(saldo_contabil);
		
		at.setSaldo_contabil(saldo_contabil);
		
	}

	public static void calculaPorcSsjSa(Atualizacao at, Cliente c, int id) {
		
		float porc_ssj_sa = 0;
		
		fat = new AtualizacaoDAO();
		Atualizacao atua = new Atualizacao();
		try {
			atua = fat.selectDetalhes_Atualizacao(at, c, id);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		porc_ssj_sa = (at.getValor_principal() / (atua.getSac_com_juros_selic() + at.getJuros_selic())) * 100;
		porc_ssj_sa = FormataNumero.formatar(porc_ssj_sa);
		at.setPorc_ssj_sa(porc_ssj_sa);		
		
	}

	public static void calculaParcCompPr(Atualizacao at) {
		
		float parc_comp_pr = 0;
		
		parc_comp_pr = at.getValor_compensado() * at.getPorc_ssj_sa();
		parc_comp_pr = parc_comp_pr / 100;
		parc_comp_pr = FormataNumero.formatar(parc_comp_pr);
		at.setParc_comp_pr(parc_comp_pr);
		
	}

	public static void calculaParcCompJrs(Atualizacao at) {
		
		float parc_comp_jrs = 0;
		
		parc_comp_jrs = at.getValor_compensado() - at.getParc_comp_pr();		
		parc_comp_jrs = FormataNumero.formatar(parc_comp_jrs);

		at.setParc_comp_jrs(parc_comp_jrs);
		
	}
}
